from math import cos, radians



# upper_left_point---施工区左上点位
# upper_right_point---施工区右上点位
# width----施工区道路宽度
def construction_area_convert(upper_left_point,upper_right_point,width):
    width=width/2
    upper_left_point1={}
    upper_right_point1={}
    upper_left_point1['lon'] = upper_left_point[0]
    upper_left_point1['lat'] = upper_left_point[1]
    upper_right_point1['lon']=upper_right_point[0]
    upper_right_point1['lat']=upper_right_point[1]
    # 道路施工区域左上角和右上角的位置和宽度（单位：米）
    # a = {'lon': 108.89493767972924, 'lat': 34.37313747228596}
    # b = {'lon': 108.89570412747818, 'lat': 34.37340978357569}
    # width = 4

    # 计算施工区域的其他两个顶点位置
    length = abs(upper_right_point1['lon'] - upper_left_point1['lon'])  # 道路施工区域长度为左侧顶点到右侧顶点的距离
    delta_lat = width / 111000  # 纬度差值（单位：度）
    delta_lon1 = (length / 2) * (180 / (3.1415 * 6371 * cos(radians(upper_left_point1['lat'])))) / 111  # 经度差值（单位：度）
    dx1 = width / 111000  # 经度差值（单位：度）
    p1 = {'lon': upper_right_point1['lon'] + delta_lon1 + dx1, 'lat': upper_right_point1['lat'] + delta_lat}
    p2 = {'lon': upper_left_point1['lon'] + delta_lon1 + dx1, 'lat': upper_left_point1['lat'] + delta_lat}
    p3 = {'lon': upper_right_point1['lon'] - delta_lon1 + dx1, 'lat': upper_right_point1['lat'] - delta_lat}
    p4 = {'lon': upper_left_point1['lon'] - delta_lon1 + dx1, 'lat': upper_left_point1['lat'] - delta_lat}

    # 在地图上绘制施工区域
    # fig, ax = plt.subplots(1)
    # ax.plot([upper_left_point1['lon'], upper_right_point1['lon'], p3['lon'], p4['lon'], upper_left_point1['lon']], [upper_left_point1['lat'], upper_right_point1['lat'], p3['lat'], p4['lat'], upper_left_point1['lat']])

    # 显示绘图结果并输出施工区域四个顶点的点位信息
    # plt.show()
    lists = list()
    # lists.append([upper_left_point1['lon'], upper_left_point1['lat']])
    lists.append([p2['lon'], p2['lat']])
    lists.append([p4['lon'], p4['lat']])
    lists.append([p3['lon'], p3['lat']])
    lists.append([p1['lon'], p1['lat']])
    # lists.append([upper_right_point1['lon'], upper_right_point1['lat']])

    # print(lists)
    return lists
def edgeid_toInt(str):
    sub_strs = str.split('.')
    new_str = sub_strs[0] + '.'

    if len(sub_strs) > 1:
        # 找到第一个 point 后面的子串，删除中间的所有点号，并将结果添加至新字符串尾部
        new_str += "".join(sub_strs[1:]).replace('.', '')

    return float(new_str)

# if __name__ == "__main__":
#     s=edgeid_toInt("299.00.11.11.11")
#     print(s)